1427. Калькулятор

 

У студента Васи есть младший брат Петя, который пошёл в первый класс и начал изучать арифметику. На домашнее задание в первом классе им дали много примеров на сложение и вычитание. Петя попросил Васю проверить его домашнее задание. Увидев две страницы написанных каракулями примеров, Вася пришёл в ужас от объёма работы и решил научить Петю  использовать  компьютер для  самопроверки .  Для  этого  Васе  нужно  написать  программу, которая будет вычислять решение требуемых арифметических примеров.

 

Вход. Одна строка, в которой могут встречаться цифры и символы+и-. Длина строки не превышает 10000 символов, значение всех чисел в ней не превышает 10000.

 

Выход. Выведите одно целое число – результат вычислений.

 

Пример входа

Пример выхода

1+22-3+4-5+123

142

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Читаем первое слагаемое в переменную res. Затем оставшуюся строку разбиваем на пары: символ операции и слагаемое.

 

Последовательно читаем пары (символ, число) до конца файла, выполняя соответствующие действия.

 

Реализация алгоритма

Первое слагаемое читаем в переменную res.

 

scanf("%d",&res);

 

Читаем знак операции ch (сложения или вычитания), и следующее за ним число x. Прибавляем x к res или вычитаем x из res.

 

while (scanf("%c%d", &ch, &x) == 2)

  if (ch == '+') res += x; else res -= x;

 

Выводим результат вычислений.

 

printf("%d\n",res);

 

Реализация алгоритма – iostream

Первое слагаемое читаем в переменную res.

 

cin >> res;

 

Продолжаем цикл до тех пор, пока следующим символом не будет символ конца строки ‘\n’. Функция peek возвращает следующий символ из входного потока, не извлекая его.

 

while(cin.peek() != '\n')

{

 

Читаем знак операции ch (сложения или вычитания), и следующее за ним число x. Прибавляем x к res или вычитаем x из res.

 

  cin >> ch >> x; 

  if (ch == '+') res += x; else res -= x;

}

 

Выводим результат вычислений.

 

cout << res << endl;

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    String s = con.nextLine();

    StringTokenizer st1 = new StringTokenizer(s, "+-");

    StringTokenizer st2 = new StringTokenizer(s, "0123456789");

    int res = Integer.parseInt(st1.nextToken());

    while (st1.hasMoreTokens())

    {

      int x = Integer.parseInt(st1.nextToken());

      if (st2.nextToken().equals("+")) res += x;

      else res -= x;

    }

    System.out.println(res);

    con.close();

  }

}

 

Python реализация

Вычисляем значение введенного выражения и выводим результат.

·     Функция eval() вычисляет строку как Python выражение и возвращает результат.

 

print(eval(input()))